package br.inf.prismasoft.academix.entity;

// Generated 16/02/2010 22:57:26 by Hibernate Tools 3.2.4.GA

import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;

/**
 * Aluno generated by hbm2java
 */
@Entity
@Table(name = "ALUNO", schema = "ACADEMIX")
public class Aluno implements java.io.Serializable {

	private static final long serialVersionUID = 3856800366487930930L;
	private int idtAluno;
	private Date datNascimento;
	private String nomAluno;
	private String numCpf;
	private String numRa;
	private String numRg;
	private Set<AvaliacaoItem> avaliacaoItems = new HashSet<AvaliacaoItem>(0);
	private Set<Solicitacao> solicitacaos = new HashSet<Solicitacao>(0);
	private Set<AlunoEndereco> alunoEnderecos = new HashSet<AlunoEndereco>(0);
	private Set<FaltaItem> faltaItems = new HashSet<FaltaItem>(0);
	private Set<Historico> historicos = new HashSet<Historico>(0);
	private Set<Turma> turmas = new HashSet<Turma>(0);

	public Aluno() {
	}

	public Aluno(int idtAluno, Date datNascimento, String nomAluno,
			String numCpf, String numRa, String numRg) {
		this.idtAluno = idtAluno;
		this.datNascimento = datNascimento;
		this.nomAluno = nomAluno;
		this.numCpf = numCpf;
		this.numRa = numRa;
		this.numRg = numRg;
	}

	public Aluno(int idtAluno, Date datNascimento, String nomAluno,
			String numCpf, String numRa, String numRg,
			Set<AvaliacaoItem> avaliacaoItems, Set<Solicitacao> solicitacaos,
			Set<AlunoEndereco> alunoEnderecos, Set<FaltaItem> faltaItems,
			Set<Historico> historicos, Set<Turma> turmas) {
		this.idtAluno = idtAluno;
		this.datNascimento = datNascimento;
		this.nomAluno = nomAluno;
		this.numCpf = numCpf;
		this.numRa = numRa;
		this.numRg = numRg;
		this.avaliacaoItems = avaliacaoItems;
		this.solicitacaos = solicitacaos;
		this.alunoEnderecos = alunoEnderecos;
		this.faltaItems = faltaItems;
		this.historicos = historicos;
		this.turmas = turmas;
	}

	@Id
	@Column(name = "IDT_ALUNO", unique = true, nullable = false)
	public int getIdtAluno() {
		return this.idtAluno;
	}

	public void setIdtAluno(int idtAluno) {
		this.idtAluno = idtAluno;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "DAT_NASCIMENTO", nullable = false, length = 10)
	@NotNull
	public Date getDatNascimento() {
		return this.datNascimento;
	}

	public void setDatNascimento(Date datNascimento) {
		this.datNascimento = datNascimento;
	}

	@Column(name = "NOM_ALUNO", nullable = false, length = 50)
	@NotNull
	@Length(max = 50)
	public String getNomAluno() {
		return this.nomAluno;
	}

	public void setNomAluno(String nomAluno) {
		this.nomAluno = nomAluno;
	}

	@Column(name = "NUM_CPF", nullable = false, length = 11)
	@NotNull
	@Length(max = 11)
	public String getNumCpf() {
		return this.numCpf;
	}

	public void setNumCpf(String numCpf) {
		this.numCpf = numCpf;
	}

	@Column(name = "NUM_RA", nullable = false, length = 10)
	@NotNull
	@Length(max = 10)
	public String getNumRa() {
		return this.numRa;
	}

	public void setNumRa(String numRa) {
		this.numRa = numRa;
	}

	@Column(name = "NUM_RG", nullable = false, length = 9)
	@NotNull
	@Length(max = 9)
	public String getNumRg() {
		return this.numRg;
	}

	public void setNumRg(String numRg) {
		this.numRg = numRg;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "aluno")
	public Set<AvaliacaoItem> getAvaliacaoItems() {
		return this.avaliacaoItems;
	}

	public void setAvaliacaoItems(Set<AvaliacaoItem> avaliacaoItems) {
		this.avaliacaoItems = avaliacaoItems;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "aluno")
	public Set<Solicitacao> getSolicitacaos() {
		return this.solicitacaos;
	}

	public void setSolicitacaos(Set<Solicitacao> solicitacaos) {
		this.solicitacaos = solicitacaos;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "aluno")
	public Set<AlunoEndereco> getAlunoEnderecos() {
		return this.alunoEnderecos;
	}

	public void setAlunoEnderecos(Set<AlunoEndereco> alunoEnderecos) {
		this.alunoEnderecos = alunoEnderecos;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "aluno")
	public Set<FaltaItem> getFaltaItems() {
		return this.faltaItems;
	}

	public void setFaltaItems(Set<FaltaItem> faltaItems) {
		this.faltaItems = faltaItems;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "aluno")
	public Set<Historico> getHistoricos() {
		return this.historicos;
	}

	public void setHistoricos(Set<Historico> historicos) {
		this.historicos = historicos;
	}

	@ManyToMany(fetch = FetchType.LAZY)
	@JoinTable(name = "ALUNO_TURMA", schema = "ACADEMIX", joinColumns = { @JoinColumn(name = "IND_ALUNO", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "IND_TURMA", nullable = false, updatable = false) })
	public Set<Turma> getTurmas() {
		return this.turmas;
	}

	public void setTurmas(Set<Turma> turmas) {
		this.turmas = turmas;
	}

}
